/**
 *@NApiVersion 2.x
 *@NScriptType ClientScript
 */
define(['N/record', 'N/ui/dialog', 'N/search'], function (record, dialog, search) {
    function postSourcing(context) {
        try {
            // 默认设置[工序加工费,材料加工费,材料深加工费]的“货品来源”为“采购订单”
            if (context.sublistId === 'item' && context.fieldId === 'item') {
                var itemId = context.currentRecord.getCurrentSublistValue('item', 'item');
                if (itemId === '868' || itemId === '49' || itemId === '866') {//工序加工费,材料加工费,材料深加工费
                    if (context.currentRecord.getCurrentSublistValue('item', 'itemsource') !== 'PURCHASE_ORDER') {
                        context.currentRecord.setCurrentSublistValue('item', 'itemsource', 'PURCHASE_ORDER');
                    }
                }
            }
        } catch (e) {
            log.error('postSourcing error:' + e.name, e.message);
        }
    }

    function fieldChanged(context) {
        try {
            //“工单类型”根据“物料单修订”主档的“BOM类型”自动带出
            if (context.fieldId === 'billofmaterialsrevision') {
                var bomRevisionId = context.currentRecord.getValue('billofmaterialsrevision');
                if (bomRevisionId && bomRevisionId.length > 0) {
                    var fieldLookUp1 = search.lookupFields({
                        type: 'bomrevision',
                        id: bomRevisionId,
                        columns: ['custrecord_bomtype']
                    });
                    var bomRevisionWorkOrderType = fieldLookUp1.custrecord_bomtype[0].value;
                    context.currentRecord.setValue('custbody_workorder_type', bomRevisionWorkOrderType);
                }
            }
        } catch (e) {
            log.error('fieldChanged error:' + e.name, e.message);
        }
    }

    function saveRecord(context) {
        try {
            var workOrderTypeId = context.currentRecord.getValue('custbody_workorder_type');
            var lineNumber1 = context.currentRecord.findSublistLineWithValue('item', 'item', '868');//工序加工费
            var lineNumber2 = context.currentRecord.findSublistLineWithValue('item', 'item', '49');//材料加工费
            var lineNumber3 = context.currentRecord.findSublistLineWithValue('item', 'item', '866');//材料深加工费
            //自制工单 1,明细行不能包含 868,49,866货品
            if (workOrderTypeId === '1') {
                if (lineNumber1 !== -1 || lineNumber2 !== -1 || lineNumber3 !== -1) {
                    dialog.alert({
                        title: "提示",
                        message: "自制工单不能包含[工序加工费]、[材料加工费]或[材料深加工费]!"
                    });
                    return false;
                }
            }
            //外协工单 2 ,明细行必须包含868,49,866 其中一个
            else if (workOrderTypeId === '2') {
                if (!(lineNumber1 !== -1 || lineNumber2 !== -1 || lineNumber3 !== -1)) {
                    dialog.alert({
                        title: "提示",
                        message: "外协工单必须包含[工序加工费]、[材料加工费]或[材料深加工费]!"
                    });
                    return false;
                }
            }
            // 判断工单明细行
            for (var i = 0; i < context.currentRecord.getLineCount('item'); i++) {
                context.currentRecord.selectLine('item', i);
                var itemId = context.currentRecord.getCurrentSublistValue('item', 'item');
                if (itemId === '868' || itemId === '49' || itemId === '866') {
                    //存在'材料加工费、材料深加工费或工序加工费'对应的'货品来源'不是 'PurchaseOrder',则不让保存
                    if (context.currentRecord.getCurrentSublistValue('item', 'itemsource') !== 'PURCHASE_ORDER') {
                        var itemName = context.currentRecord.getCurrentSublistText('item', 'item');
                        dialog.alert({
                            title: "提示",
                            message: '第' + (i + 1) + '行,[' + itemName + ']对应的[货品来源]不是[采购订单]'
                        });
                        return false;
                    }
                }
            }
        } catch (e) {
            log.error('saveRecord error:' + e.name, e.message);
        }

        return true;
    }


    return {
        postSourcing: postSourcing,
        fieldChanged: fieldChanged,
        saveRecord: saveRecord
    };
});